
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
  <meta charset="utf-8">
  <title>XCode Dev  Gary</title>
  <meta name="author" content="蒲晓涛">

  
  <meta name="description" content="Dealloc 让我们看看这些错误，然后一个一个的修复他们。 我们从 dealloc 开始： dealloc 中的每一行都会有一个错误。 我们不再被允许调用 [release] 了， 也不允许调用 [super dealloc]。 因为我们在 dealloc 不再做任何操作了， &hellip;">
  

  <!-- http://t.co/dKP3o1e -->
  <meta name="HandheldFriendly" content="True">
  <meta name="MobileOptimized" content="320">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  
  <link rel="canonical" href="http://p709723778.github.io">
  <link href="/favicon.png" rel="icon">
  <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
  <link href="/atom.xml" rel="alternate" title="XCode Dev  Gary" type="application/atom+xml">
  <script src="/javascripts/modernizr-2.0.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
  <script src="/javascripts/octopress.js" type="text/javascript"></script>
  <!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="//fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">

  

</head>

<body   >
  <header role="banner"><hgroup>
  <h1><a href="/">XCode Dev  Gary</a></h1>
  
    <h2>Work is just a part of life! －Gary</h2>
  
</hgroup>

</header>
  <nav role="navigation"><ul class="subscription" data-subscription="rss">
  <li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
  
</ul>
  
<form action="https://www.google.com/search" method="get">
  <fieldset role="search">
    <input type="hidden" name="q" value="site:p709723778.github.io" />
    <input class="search" type="text" name="q" results="0" placeholder="Search"/>
  </fieldset>
</form>
  
<ul class="main-navigation">
  <li><a href="/">首页</a></li>
  <li><a href="/blog/archives">IOS资料</a></li>
  <li><a href="http://weibo.com/234050155" target="_blank">My微博</a></li>
  
  
</ul>

</nav>
  <div id="main">
    <div id="content">
      <div class="blog-index">
  
  
  
    <article>
      
  <header>
    
      <h1 class="entry-title"><a href="/blog/2014/04/14/ioskai-fa-zhi-arcxia-de-deallocbao-liu-yuan-yin/">IOS开发之 &#8212;- ARC下的dealloc保留原因</a></h1>
    
    
      <p class="meta">
        








  


<time datetime="2014-04-14T19:41:42+08:00" pubdate data-updated="true">Apr 14<span>th</span>, 2014</time>
        
      </p>
    
  </header>


  <div class="entry-content"><h2>Dealloc</h2>

<p>让我们看看这些错误，然后一个一个的修复他们。 我们从 dealloc 开始：<br/>
<img src="/images/0024NRrygy6I1EZW5ywb0&690.png"></p>

<p>dealloc 中的每一行都会有一个错误。 我们不再被允许调用 [release] 了， 也不允许调用 [super dealloc]。 因为我们在 dealloc 不再做任何操作了， 所以我们可以直接把这个方法删除掉。
唯一一个留着 dealloc 方法的原因就是， 你需要释放一些不在 ARC 控制下的资源。 例如 Core Foundation 对象中调用 CFRelease()， 对那些通过 malloc() 分配的内存调用 free(), 注销通知，停止 Tiner， 等等。
如果你是一个对象的代理的话，有时必须显式的断开和它的连接，但通常这都是自动的。 大部分情况下，代理都是弱引用(我们马上会介绍到)， 当一个即将被释放的对象是其他对象的代理的话， 当这个对象被销毁时，代理指针将会被自动设置为 nil。 弱指针在这之后会被自动清楚。
另外， 在你的 dealloc 方法中， 你仍然可以使用实例变量， 因为他们在这时候还没被释放掉。 在 dealloc 返回之前，都不会被释放。</p>
</div>
  
  


    </article>
  
  
    <article>
      
  <header>
    
      <h1 class="entry-title"><a href="/blog/2014/04/14/macosxzhi-qqjie-tu-ou-er-bu-neng-shi-yong-wen-ti/">MacOSX之 &#8212;- QQ截图偶尔不能使用问题</a></h1>
    
    
      <p class="meta">
        








  


<time datetime="2014-04-14T19:35:50+08:00" pubdate data-updated="true">Apr 14<span>th</span>, 2014</time>
        
      </p>
    
  </header>


  <div class="entry-content"><p>找到这个目录,然后双击截图插件ScreenCapture
<img src="/images/QQCutImage.jpeg"></p>

<h4>注:路径</h4>

<p>/Applications/QQ.app/Contents/Library/LoginItems/ScreenCapture</p>

<p>这样就可以使用截图了</p>
</div>
  
  


    </article>
  
  
    <article>
      
  <header>
    
      <h1 class="entry-title"><a href="/blog/2014/03/22/new-post/">博客迁移</a></h1>
    
    
      <p class="meta">
        








  


<time datetime="2014-03-22T17:08:00+08:00" pubdate data-updated="true">Mar 22<span>nd</span>, 2014</time>
        
      </p>
    
  </header>


  <div class="entry-content"><p>octopress与wordpress最大的不同就是使用的都是静态页面html.octopress工程安装在你本地就可以了。然后通过工具生成静态页面，然后可以同步到服务器上面，没有数据库。相对于动态工程来说，同步更简单、更返璞归真。但有些弊端就是没有数据库无法做评论等系统。但可以借助第三方评论，octopress里面默认安装了disqus插件。</p>
</div>
  
  


    </article>
  
  
    <article>
      
  <header>
    
      <h1 class="entry-title"><a href="/blog/2014/03/22/ios7shi-dai-wo-men-yong-shi-yao-lai-zhui-zong-he-shi-bie-yong-hu-%3F/">iOS7时代我们用什么来追踪和识别用户？</a></h1>
    
    
      <p class="meta">
        








  


<time datetime="2014-03-22T17:07:11+08:00" pubdate data-updated="true">Mar 22<span>nd</span>, 2014</time>
        
      </p>
    
  </header>


  <div class="entry-content"><p>要识别用户，首先就是要选择一个标识符，通过这个标识符来识别这个用户的设备（而不是用户），这个标识符要能够保证一个设备上返回的值是一样的，并且在其他设备上不会出现相同的值。</p>

<p>在iOS7之前，曾经有过很多方法来识别用户的设备，从最原始的设备udid、mac地址，到被各广告统计平台广泛使用的开源方案OpenUDID。</p>

<p>但随着AppStore开始拒绝接受使用udid的应用，到mac地址在iOS7上所有设备上都返回相同的值，再到iOS7上对剪贴板的限制，导致OpenUDID无法被不同应用共享相同的值，注定了上面提到的这些id们不得不退出历史的舞台。</p>

<p>随着iOS7快速占据了半壁江山，设备id的控制权终于彻底回到了Apple手中，同时也让用户能够把控自己的隐私，充分表明了是苹果对用户隐私保护的决心。</p>

<p>好了，其实就一个问题：iOS7时代我们用什么来追踪和识别用户？</p>

<h3>先给结论</h3>

<p>idfa: 适用于对外：例如广告推广，换量等跨应用的用户追踪等
idfv: 适用于对内：例如分析用户在应用内的行为等
PS：尘埃落定，跟着Apple走，大家不用再犹豫了。</p>

<h3>再给解释</h3>

<h4>idfa</h4>

<p>全名：advertisingIdentifier
代码：</p>

<p><code>#import  
NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];</code></p>

<p>来源：iOS6.0及以后</p>

<p>说明：直译就是广告id， 在同一个设备上的所有App都会取到相同的值，是苹果专门给各广告提供商用来追踪用户而设的，用户可以在 设置|隐私|广告追踪 里重置此id的值，或限制此id的使用，故此id有可能会取不到值，但好在Apple默认是允许追踪的，而且一般用户都不知道有这么个设置，所以基本上用来监测推广效果，是戳戳有余了。
注意：由于idfa会出现取不到的情况，故绝不可以作为业务分析的主id，来识别用户。
idfv
全名：identifierForVendor
代码：</p>

<p>  NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];</p>

<p>来源：iOS6.0及以后</p>

<p>说明：顾名思义，是给Vendor标识用户用的，每个设备在所属同一个Vender的应用里，都有相同的值。其中的Vender是指应用提供商，但准确点说，是通过BundleID的DNS反转的前两部分进行匹配，如果相同就是同一个Vender，例如对于com.somecompany.appone,com.somecompany.apptwo 这两个BundleID来说，就属于同一个Vender，共享同一个idfv的值。和idfa不同的是，idfv的值是一定能取到的，所以非常适合于作为内部用户行为分析的主id，来标识用户，替代OpenUDID。
注意：如果用户将属于此Vender的所有App卸载，则idfv的值会被重置，即再重装此Vender的App，idfv的值和之前不同。</p>

<p>历史上的英雄们
UDID
设备唯一标识符（Unique Device Identifier）之前被各种国内外统计平台，应用开发商广泛使用，后Apple从2013年05月01日起拒绝接受使用UDID的应用后，立毙！</p>

<p>Mac地址
每一个网卡都有一个唯一的标识，即Mac地址，显然用来标识一个手机是绰绰有余的了，也有一些开源的方案也用到了它，国内UMTrack等也用它作为过主id，随着iOS7返回同样的值后，不得不退隐江湖。</p>

<p>OpenUDID
在Apple拒绝UDID后，OpenUDID作为独立于Apple的开源方案，被广大的开发者所接受，各大统计广告平台都从UDID等方案切换到OpenUDID的方案（看来大家都不想完全被Apple束缚啊），但不幸的事，同样由于iOS7对剪贴板的限制，导致同一个设备上应用间，无法再共享一个OpenUDID，即OpenUDID作为设备唯一标识的能力被大大削弱。也可以看到随着iOS7的来临，各广告平台都迅速更新自己的SDK，来切换到苹果的idfa的方案上来。</p>

<p>其他
CFUUID、NSUUID等自己生成，自己存储管理的就不细说啦。</p>

<p>DeviceToken
这是推送用的令牌，用户如果没开推送，或者拒绝了，这个就没有了！了！</p>
</div>
  
  


    </article>
  
  <div class="pagination">
    
    <a href="/blog/archives">Blog Archives</a>
    
  </div>
</div>
<aside class="sidebar">
  
    <section>
  <h1>最新帖子</h1>
  <ul id="recent_posts">
    
      <li class="post">
        <a href="/blog/2014/04/14/ioskai-fa-zhi-arcxia-de-deallocbao-liu-yuan-yin/">IOS开发之 &#8212;- ARC下的dealloc保留原因</a>
      </li>
    
      <li class="post">
        <a href="/blog/2014/04/14/macosxzhi-qqjie-tu-ou-er-bu-neng-shi-yong-wen-ti/">MacOSX之 &#8212;- QQ截图偶尔不能使用问题</a>
      </li>
    
      <li class="post">
        <a href="/blog/2014/03/22/new-post/">博客迁移</a>
      </li>
    
      <li class="post">
        <a href="/blog/2014/03/22/ios7shi-dai-wo-men-yong-shi-yao-lai-zhui-zong-he-shi-bie-yong-hu-%3F/">iOS7时代我们用什么来追踪和识别用户？</a>
      </li>
    
  </ul>
</section>
<iframe width="100%" height="550" class="share_self"  frameborder="0" scrolling="no" src="http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=550&fansRow=2&ptype=1&speed=0&skin=1&isTitle=1&noborder=1&isWeibo=1&isFans=1&uid=1903254520&verifier=76bf5e3a&dpc=1"></iframe>



    
<section>    
<h1>Visitor</h1>    
<div>    
    <p></p>    
    <center>    
    <a href="http://info.flagcounter.com/Y4OM"><img src="http://s06.flagcounter.com/count/Y4OM/bg_FFFFFF/txt_000000/border_CCCCCC/columns_2/maxflags_12/viewers_0/labels_0/pageviews_0/flags_0/" alt="Flag Counter" border="0"></a>   
    </center>    
</div>    
</section>    
    
  
</aside>

    </div>
  </div>
  <footer role="contentinfo"><p>
  Copyright &copy; 2014 - 蒲晓涛 -
  <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>

</footer>
  











</body>
</html>
